velaif820 2.2.0
Loading...
Searching...
No Matches
velaif820.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
27
28#ifndef VELAIF820_H
29#define VELAIF820_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_uart.h"
52
58
63
68
73#define VELAIF820_PACKET_CMD_ACTION "/"
74#define VELAIF820_PACKET_CMD_SET "S"
75#define VELAIF820_PACKET_CMD_GET "G"
76#define VELAIF820_PACKET_CMD_PROFILE "."
77#define VELAIF820_PACKET_RESPONSE "@R"
78#define VELAIF820_PACKET_EVENT "@E"
79#define VELAIF820_PACKET_PARAM_DELIMITER ","
80#define VELAIF820_PACKET_END "\r\n"
81
86#define VELAIF820_CMD_SYS_PING "PING"
87#define VELAIF820_CMD_SYS_REBOOT "RBT"
88#define VELAIF820_CMD_SYS_DUMP "DUMP"
89#define VELAIF820_CMD_SYS_STORE_CONFIG "SCFG"
90#define VELAIF820_CMD_SYS_FACTORY_RESET "RFAC"
91#define VELAIF820_CMD_SYS_QUERY_FW_VERSION "QFV"
92#define VELAIF820_CMD_SYS_QUERY_RANDOM_NUM "QRND"
93#define VELAIF820_CMD_SYS_WRITE_USER_DATA "WUD"
94#define VELAIF820_CMD_SYS_READ_USER_DATA "RUD"
95#define VELAIF820_CMD_GAP_CONNECT "C"
96#define VELAIF820_CMD_GAP_CANCEL_CONNECTION "CX"
97#define VELAIF820_CMD_GAP_DISCONNECT "DIS"
98#define VELAIF820_CMD_GAP_START_ADV "A"
99#define VELAIF820_CMD_GAP_STOP_ADV "AX"
100#define VELAIF820_CMD_GAP_START_SCAN "S"
101#define VELAIF820_CMD_GAP_STOP_SCAN "SX"
102#define VELAIF820_CMD_GAP_QUERY_PEER_ADDRESS "QPA"
103#define VELAIF820_CMD_GAP_QUERY_RSSI "QSS"
104#define VELAIF820_CMD_SMP_QUERY_BONDS "QB"
105#define VELAIF820_CMD_SMP_DELETE_BOND "BD"
106#define VELAIF820_CMD_SMP_PAIR "P"
107#define VELAIF820_CMD_BT_QUERY_NAME "BTQN"
108#define VELAIF820_CMD_BT_CONNECT "BTC"
109#define VELAIF820_CMD_BT_CANCEL_CONNECTION "BTCX"
110#define VELAIF820_CMD_BT_DISCONNECT "BTDIS"
111#define VELAIF820_CMD_BT_QUERY_PEER_ADDRESS "BTQPA"
112#define VELAIF820_CMD_BT_QUERY_RSSI "BTQSS"
113
118#define VELAIF820_CMD_PROTOCOL_PARSE_MODE "PPM"
119#define VELAIF820_CMD_PROTOCOL_ECHO_MODE "PEM"
120#define VELAIF820_CMD_SYS_BT_ADDRESS "BA"
121#define VELAIF820_CMD_SYS_TX_POWER "TXP"
122#define VELAIF820_CMD_SYS_TRANSPORT "T"
123#define VELAIF820_CMD_GAP_DEVICE_NAME "DN"
124#define VELAIF820_CMD_GAP_DEVICE_APPEARANCE "DA"
125#define VELAIF820_CMD_GAP_ADV_DATA "AD"
126#define VELAIF820_CMD_GAP_SR_DATA "SRD"
127#define VELAIF820_CMD_GAP_ADV_PARAMS "AP"
128#define VELAIF820_CMD_GAP_SCAN_PARAMS "SP"
129#define VELAIF820_CMD_GAP_CONNECTION_PARAMS "CP"
130#define VELAIF820_CMD_SMP_PIN_CODE "BTPIN"
131
136#define VELAIF820_CMD_CYSPP_START "CYSPPSTART"
137#define VELAIF820_CMD_CYSPP_SET_PARAMS "CYSPPSP"
138#define VELAIF820_CMD_CYSPP_GET_PARAMS "CYSPPGP"
139#define VELAIF820_CMD_CYSPP_SET_PACKETIZATION "CYSPPSK"
140#define VELAIF820_CMD_CYSPP_GET_PACKETIZATION "CYSPPGK"
141#define VELAIF820_CMD_SPP_SEND_CMD "SPPS"
142#define VELAIF820_CMD_SPP_SET_CFG "SPPSC"
143#define VELAIF820_CMD_SPP_GET_CFG "SPPGC"
144
149#define VELAIF820_EVT_SYS_BOOT "BOOT"
150#define VELAIF820_EVT_SYS_ERROR "ERR"
151#define VELAIF820_EVT_SYS_FACTORY_RESET_COMPLETE "RFAC"
152#define VELAIF820_EVT_SYS_DUMP_BLOB "DBLOB"
153#define VELAIF820_EVT_GAP_ADV_STATE_CHANGED "ASC"
154#define VELAIF820_EVT_GAP_SCAN_STATE_CHANGED "SSC"
155#define VELAIF820_EVT_GAP_SCAN_RESULT "S"
156#define VELAIF820_EVT_GAP_CONNECTED "C"
157#define VELAIF820_EVT_GAP_DISCONNECTED "DIS"
158#define VELAIF820_EVT_GAP_CONNECTION_UPDATED "CU"
159#define VELAIF820_EVT_SMP_BOND_ENTRY "B"
160#define VELAIF820_EVT_SMP_PAIRING_REQUESTED "P"
161#define VELAIF820_EVT_SMP_PAIRING_RESULT "PR"
162#define VELAIF820_EVT_SMP_ENCRYPTION_STATUS "ENC"
163#define VELAIF820_EVT_SMP_PIN_ENTRY_REQUESTED "BTPIN"
164#define VELAIF820_EVT_BT_INQUIRY_RESULT "BTIR"
165#define VELAIF820_EVT_BT_NAME_RESULT "BTINR"
166#define VELAIF820_EVT_BT_INQUIRY_COMPLETED "BTIC"
167#define VELAIF820_EVT_BT_CONNECTED "BTCON"
168#define VELAIF820_EVT_BT_CONNECTION_STATUS "BTCS"
169#define VELAIF820_EVT_BT_CONNECTION_FAILED "BTCF"
170#define VELAIF820_EVT_BT_DISCONNECTED "BTDIS"
171#define VELAIF820_EVT_SPP_DATA_RECEIVED "SPPD"
172
177#define VELAIF820_PACKET_TYPE_EVENT 0
178#define VELAIF820_PACKET_TYPE_RESPONSE 1
179
184#define VELAIF820_RSP_TIMEOUT_1000MS 1000
185#define VELAIF820_CMD_TIMEOUT_5000MS 5000
186#define VELAIF820_WAIT_TIMEOUT_5S 5
187#define VELAIF820_WAIT_TIMEOUT_INFINITE 0
188
194#define VELAIF820_CMD_CODE_BUFFER_SIZE 20
195#define VELAIF820_PAYLOAD_BUFFER_SIZE 200
196#define VELAIF820_TX_DRV_BUFFER_SIZE 200
197#define VELAIF820_RX_DRV_BUFFER_SIZE 500
198 // velaif820_cmd
200
205
210
215#define VELAIF820_MAP_MIKROBUS( cfg, mikrobus ) \
216 cfg.tx_pin = MIKROBUS( mikrobus, MIKROBUS_TX ); \
217 cfg.rx_pin = MIKROBUS( mikrobus, MIKROBUS_RX ); \
218 cfg.hwe = MIKROBUS( mikrobus, MIKROBUS_AN ); \
219 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
220 cfg.rts = MIKROBUS( mikrobus, MIKROBUS_CS ); \
221 cfg.spp = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
222 cfg.cts = MIKROBUS( mikrobus, MIKROBUS_INT );
223 // velaif820_map // velaif820
226
239
244typedef struct
245{
246 // Output pins
247 digital_out_t rts;
248 digital_out_t rst;
249 digital_out_t spp;
250
251 // Input pins
252 digital_in_t hwe;
253 digital_in_t cts;
254
255 // Modules
256 uart_t uart;
257
258 // Buffers
263
265
270typedef struct
271{
272 // Communication gpio pins
273 pin_name_t rx_pin;
274 pin_name_t tx_pin;
275
276 // Additional gpio pins
277 pin_name_t hwe;
278 pin_name_t rts;
279 pin_name_t rst;
280 pin_name_t spp;
281 pin_name_t cts;
282
283 // Static variable
284 uint32_t baud_rate;
286 uart_data_bits_t data_bit;
287 uart_parity_t parity_bit;
288 uart_stop_bits_t stop_bit;
289
291
304
310
321
336
349err_t velaif820_generic_write ( velaif820_t *ctx, uint8_t *data_in, uint16_t len );
350
363err_t velaif820_generic_read ( velaif820_t *ctx, uint8_t *data_out, uint16_t len );
364
374void velaif820_set_rst_pin ( velaif820_t *ctx, uint8_t state );
375
385
395void velaif820_set_rts_pin ( velaif820_t *ctx, uint8_t state );
396
406
416
426
436
447void velaif820_cmd_action ( velaif820_t *ctx, uint8_t *cmd, uint8_t *params );
448
459void velaif820_cmd_set ( velaif820_t *ctx, uint8_t *cmd, uint8_t *params );
460
471void velaif820_cmd_get ( velaif820_t *ctx, uint8_t *cmd, uint8_t *params );
472
483void velaif820_cmd_profile ( velaif820_t *ctx, uint8_t *cmd, uint8_t *params );
484
497
498#ifdef __cplusplus
499}
500#endif
501#endif // VELAIF820_H
502 // velaif820
504
505// ------------------------------------------------------------------------ END
#define VELAIF820_CMD_CODE_BUFFER_SIZE
Vela IF820 driver buffer size.
Definition velaif820.h:194
#define VELAIF820_TX_DRV_BUFFER_SIZE
Definition velaif820.h:196
#define VELAIF820_PAYLOAD_BUFFER_SIZE
Definition velaif820.h:195
#define VELAIF820_RX_DRV_BUFFER_SIZE
Definition velaif820.h:197
void velaif820_cfg_setup(velaif820_cfg_t *cfg)
Vela IF820 configuration object setup function.
void velaif820_cmd_action(velaif820_t *ctx, uint8_t *cmd, uint8_t *params)
Vela IF820 cmd action function.
err_t velaif820_generic_write(velaif820_t *ctx, uint8_t *data_in, uint16_t len)
Vela IF820 data writing function.
void velaif820_set_cmd_mode(velaif820_t *ctx)
Vela IF820 set cmd mode function.
void velaif820_set_rst_pin(velaif820_t *ctx, uint8_t state)
Vela IF820 set RST pin function.
err_t velaif820_init(velaif820_t *ctx, velaif820_cfg_t *cfg)
Vela IF820 initialization function.
void velaif820_cmd_get(velaif820_t *ctx, uint8_t *cmd, uint8_t *params)
Vela IF820 cmd get function.
void velaif820_cmd_set(velaif820_t *ctx, uint8_t *cmd, uint8_t *params)
Vela IF820 cmd set function.
err_t velaif820_read_packet(velaif820_t *ctx)
Vela IF820 read packet function.
err_t velaif820_generic_read(velaif820_t *ctx, uint8_t *data_out, uint16_t len)
Vela IF820 data reading function.
uint8_t velaif820_get_hwe_pin(velaif820_t *ctx)
Vela IF820 get HWE pin function.
void velaif820_cmd_profile(velaif820_t *ctx, uint8_t *cmd, uint8_t *params)
Vela IF820 cmd profile function.
void velaif820_reset_device(velaif820_t *ctx)
Vela IF820 reset device function.
void velaif820_set_data_mode(velaif820_t *ctx)
Vela IF820 set data mode function.
uint8_t velaif820_get_cts_pin(velaif820_t *ctx)
Vela IF820 get CTS pin function.
void velaif820_set_rts_pin(velaif820_t *ctx, uint8_t state)
Vela IF820 set RTS pin function.
Vela IF820 Click configuration object.
Definition velaif820.h:271
pin_name_t rts
Definition velaif820.h:278
uint32_t baud_rate
Definition velaif820.h:284
pin_name_t cts
Definition velaif820.h:281
pin_name_t hwe
Definition velaif820.h:277
pin_name_t spp
Definition velaif820.h:280
bool uart_blocking
Definition velaif820.h:285
uart_data_bits_t data_bit
Definition velaif820.h:286
pin_name_t tx_pin
Definition velaif820.h:274
pin_name_t rx_pin
Definition velaif820.h:273
uart_stop_bits_t stop_bit
Definition velaif820.h:288
uart_parity_t parity_bit
Definition velaif820.h:287
pin_name_t rst
Definition velaif820.h:279
Vela IF820 Click response/event packet object.
Definition velaif820.h:232
uint8_t command[VELAIF820_CMD_CODE_BUFFER_SIZE]
Definition velaif820.h:234
uint8_t rsp_flag
Definition velaif820.h:233
uint8_t payload[VELAIF820_PAYLOAD_BUFFER_SIZE]
Definition velaif820.h:236
uint16_t rsp_result
Definition velaif820.h:235
Vela IF820 Click context object.
Definition velaif820.h:245
uint8_t uart_rx_buffer[VELAIF820_RX_DRV_BUFFER_SIZE]
Definition velaif820.h:259
digital_out_t rts
Definition velaif820.h:247
uart_t uart
Definition velaif820.h:256
digital_in_t hwe
Definition velaif820.h:252
uint8_t uart_tx_buffer[VELAIF820_TX_DRV_BUFFER_SIZE]
Definition velaif820.h:260
digital_in_t cts
Definition velaif820.h:253
digital_out_t rst
Definition velaif820.h:248
uint8_t cmd_buffer[VELAIF820_PAYLOAD_BUFFER_SIZE]
Definition velaif820.h:261
velaif820_rsp_evt_packet_t evt_pkt
Definition velaif820.h:262
digital_out_t spp
Definition velaif820.h:249
velaif820_return_value_t
Vela IF820 Click return value data.
Definition velaif820.h:297
@ VELAIF820_ERROR
Definition velaif820.h:299
@ VELAIF820_ERROR_TIMEOUT
Definition velaif820.h:300
@ VELAIF820_ERROR_CMD
Definition velaif820.h:301
@ VELAIF820_OK
Definition velaif820.h:298